package Guigu6.Extends;

/*面向对象的特征之二：继承性
 * 
 * 一、继承性的好处
 * ① 减少了代码的冗余，提高了代码的复用性
 * ② 便于功能的扩展
 * ③ 为之后多态性的使用，提供了前提
 * 
 * 二、继承性的格式：class A extends B{}
 *    A：子类、派生类 、subclass
 *    B：父类、超类、基类、superclass
 *    
 *   2.1 体现：一旦子类继承父类B以后，子类A中就获取了父类B中的声明的所有的属性和方法
 *    特别的，父类中声明为private的属性或方法，子类继承父类以后，仍然认为获取了父类中私有的结构。
 *    只有因为封装性的影响，使得子类不能之间调用父类的结构而已。
 *   2.2 子类继承父类以后，还可以声明自己特有的属性或方法：实现功能的拓展。
 *   
 * 三、JAVA中关于继承性的规定
 *   1.一个类可以被多个子类继承
 *   2.JAVA中类的单继承性：一个类只能有一个父类
 *   3.子父类是相对的概念。
 *   4.子类直接继承的父类，称为：直接父类。间接继承的父类称为：间接父类
 *   5.子类继承父类以后，就获取了直接父类以及所有间接父类中声明的属性和方法
 *   
 * 四、1.如果我们没有显式的声明一个类的父类的话，则此类继承与java.lang.Object类
 *    2.所有的Java类(除Java.lang.Object类之外)都直接或间接的继承于java.lang.Object类
 *    3.意味着，所有的Java类具有java.lang.Object类声明的功能。
 */
public class ExtendsTest {

	public static void main(String[] args) {
		
		Man m = new Man();
		//m.age = 18;
		m.eat();
		
		Student s = new Student();
		s.eat();
		s.name = "tom";
		System.out.println(s.name);
		s.major = "计算机科学与技术";
		System.out.println(s.major);
		s.setAge(19);
		System.out.println(s.getAge());
		//s.sleep();
	}

}
